overrides:
- files:
- js/ui/init.js
+ - js/dbusServices/**
parserOptions:
- sourceType: module
\ No newline at end of file
+ sourceType: module
-imports.package.start({
+import {programInvocationName, programArgs} from 'system';
+
+imports.package.init({
name: '@PACKAGE_NAME@',
prefix: '@prefix@',
libdir: '@libdir@',
});
+const {main} = await import(`${imports.package.moduledir}/main.js`);
+await main([programInvocationName, ...programArgs]);
[D-BUS Service]
Name=@service@
-Exec=@gjs@ @pkgdatadir@/@service@
+Exec=@gjs@ -m @pkgdatadir@/@service@
-/* exported DBusService, ServiceImplementation */
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
-const { Gio, GLib } = imports.gi;
+import {programArgs} from 'system';
const Signals = imports.signals;
const IDLE_SHUTDOWN_TIME = 2; // s
-const { programArgs } = imports.system;
-
-var ServiceImplementation = class {
+export class ServiceImplementation {
constructor(info, objectPath) {
this._objectPath = objectPath;
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(info, this);
that._queueShutdownCheck();
};
}
-};
+}
Signals.addSignalMethods(ServiceImplementation.prototype);
-var DBusService = class {
+export class DBusService {
constructor(name, service) {
this._name = name;
this._service = service;
this._service.connect('shutdown', () => this._loop.quit());
}
- run() {
+ async runAsync() {
// Bail out when not running under gnome-shell
Gio.DBus.watch_name(Gio.BusType.SESSION,
'org.gnome.Shell',
null,
() => this._loop.quit());
- this._loop.run();
+ await this._loop.runAsync();
}
-};
+}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ExtensionPrefsDialog */
-const { Adw, Gdk, Gio, GLib, GObject, Gtk } = imports.gi;
+import Adw from 'gi://Adw?version=1';
+import Gdk from 'gi://Gdk?version=4.0';
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import GObject from 'gi://GObject';
+import Gtk from 'gi://Gtk?version=4.0';
const ExtensionUtils = imports.misc.extensionUtils;
-var ExtensionPrefsDialog = GObject.registerClass({
+export const ExtensionPrefsDialog = GObject.registerClass({
GTypeName: 'ExtensionPrefsDialog',
}, class ExtensionPrefsDialog extends Adw.PreferencesWindow {
_init(extension) {
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ExtensionsService */
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Shew from 'gi://Shew';
-const { Gio, GLib, Shew } = imports.gi;
+import {ExtensionPrefsDialog} from './extensionPrefsDialog.js';
+import {ServiceImplementation} from './dbusService.js';
const ExtensionUtils = imports.misc.extensionUtils;
-
-const { loadInterfaceXML } = imports.misc.dbusUtils;
-const { ExtensionPrefsDialog } = imports.extensionPrefsDialog;
-const { ServiceImplementation } = imports.dbusService;
+const {loadInterfaceXML} = imports.misc.dbusUtils;
const ExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions');
const ExtensionsProxy = Gio.DBusProxy.makeProxyWrapper(ExtensionsIface);
-var ExtensionsService = class extends ServiceImplementation {
+export const ExtensionsService = class extends ServiceImplementation {
constructor() {
super(ExtensionsIface, '/org/gnome/Shell/Extensions');
-/* exported main */
-
-imports.gi.versions.Adw = '1';
-imports.gi.versions.Gdk = '4.0';
-imports.gi.versions.Gtk = '4.0';
-
-const { Adw, GObject } = imports.gi;
+import Adw from 'gi://Adw?version=1';
+import GObject from 'gi://GObject';
const pkg = imports.package;
-const { DBusService } = imports.dbusService;
-const { ExtensionsService } = imports.extensionsService;
+import {DBusService} from './dbusService.js';
+import {ExtensionsService} from './extensionsService.js';
-function main() {
+/** @returns {void} */
+export async function main() {
Adw.init();
pkg.initFormat();
const service = new DBusService(
'org.gnome.Shell.Extensions',
new ExtensionsService());
- service.run();
+ await service.runAsync();
}
-/* exported main */
+import {DBusService} from './dbusService.js';
+import {NotificationDaemon} from './notificationDaemon.js';
-const { DBusService } = imports.dbusService;
-const { NotificationDaemon } = imports.notificationDaemon;
-
-function main() {
+/** @returns {void} */
+export async function main() {
const service = new DBusService(
'org.gnome.Shell.Notifications',
new NotificationDaemon());
- service.run();
+ await service.runAsync();
}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported NotificationDaemon */
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
-const { Gio, GLib } = imports.gi;
+import {ServiceImplementation} from './dbusService.js';
-const { loadInterfaceXML } = imports.misc.dbusUtils;
-const { ServiceImplementation } = imports.dbusService;
+const {loadInterfaceXML} = imports.misc.dbusUtils;
const NotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
const NotificationsProxy = Gio.DBusProxy.makeProxyWrapper(NotificationsIface);
Gio._promisify(Gio.DBusConnection.prototype, 'call');
-var NotificationDaemon = class extends ServiceImplementation {
+export const NotificationDaemon = class extends ServiceImplementation {
constructor() {
super(NotificationsIface, '/org/freedesktop/Notifications');
-/* exported main */
+import {DBusService} from './dbusService.js';
+import {ScreencastService} from './screencastService.js';
-const {DBusService} = imports.dbusService;
-
-function main() {
- const {ScreencastService} = imports.screencastService;
+/** @returns {void} */
+export async function main() {
if (!ScreencastService.canScreencast())
return;
const service = new DBusService(
'org.gnome.Shell.Screencast',
new ScreencastService());
- service.run();
+ await service.runAsync();
}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ScreencastService */
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
+import Gst from 'gi://Gst?version=1.0';
+import Gtk from 'gi://Gtk?version=4.0';
-imports.gi.versions.Gst = '1.0';
-imports.gi.versions.Gtk = '4.0';
+import {ServiceImplementation} from './dbusService.js';
-const { Gio, GLib, Gst, Gtk } = imports.gi;
-
-const { loadInterfaceXML, loadSubInterfaceXML } = imports.misc.dbusUtils;
+const {loadInterfaceXML, loadSubInterfaceXML} = imports.misc.dbusUtils;
const Signals = imports.misc.signals;
-const { ServiceImplementation } = imports.dbusService;
const ScreencastIface = loadInterfaceXML('org.gnome.Shell.Screencast');
}
};
-var ScreencastService = class extends ServiceImplementation {
+export const ScreencastService = class extends ServiceImplementation {
static canScreencast() {
if (!Gst.init_check(null))
return false;
-/* exported main */
+import {DBusService} from './dbusService.js';
+import {ScreenSaverService} from './screenSaverService.js';
-const { DBusService } = imports.dbusService;
-const { ScreenSaverService } = imports.screenSaverService;
-
-function main() {
+/** @returns {void} */
+export async function main() {
const service = new DBusService(
'org.gnome.ScreenSaver',
new ScreenSaverService());
- service.run();
+ await service.runAsync();
}
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported ScreenSaverService */
+import Gio from 'gi://Gio';
+import GLib from 'gi://GLib';
-const { Gio, GLib } = imports.gi;
+import {ServiceImplementation} from './dbusService.js';
-const { loadInterfaceXML } = imports.misc.dbusUtils;
-const { ServiceImplementation } = imports.dbusService;
+const {loadInterfaceXML} = imports.misc.dbusUtils;
const ScreenSaverIface = loadInterfaceXML('org.gnome.ScreenSaver');
const ScreenSaverProxy = Gio.DBusProxy.makeProxyWrapper(ScreenSaverIface);
-var ScreenSaverService = class extends ServiceImplementation {
+export const ScreenSaverService = class extends ServiceImplementation {
constructor() {
super(ScreenSaverIface, '/org/gnome/ScreenSaver');